// my/pages/xtxOrdersReview/xtxOrdersReview.js
var http = require('../../../utils/https');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 订单详情
    allOrderIemDetails: [],
    // 评论内容
    reviewContent: '',
    currentLength: 0, // 当前字数
    // 商品评分
    productRating: '',
    // 订单id
    orderId: 0,
    // 上传图片数组
    fileList: [],
  // 图片上传相关
  imagePaths: [], // 存储临时图片路径
  imageUrls: [], // 存储上传后的图片URL
  maxImageCount: 5, // 最大上传图片数量
  //存储返回的url
  image:[],
  //转为字符串
  imageUrl:'',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 接收传递过来的订单ID
    if (options.orderId) {
      this.setData({
        orderId: options.orderId
      });
      console.log('接收到的订单ID:', this.data.orderId);
      // 这里可以根据订单ID加载订单详情和商品信息
      this.loadOrderDetails(options.orderId);
    }
  },

  // 加载订单详情
  loadOrderDetails(orderId) {
    console.log('加载订单详情:', orderId);

    // GET 请求
    http.GET(`/order/item/list`, {
      orderId: orderId
    }, (res) => {
      console.log('加载订单详情成功:', res);
      // 格式化价格为两位小数
      const formattedList = res.rows.map(item => ({
        ...item,
        // 四舍五入保留两位小数
        subtotal: Number(item.subtotal).toFixed(2),
        unitPrice: Number(item.unitPrice).toFixed(2)
      }));
      this.setData({
        allOrderIemDetails: formattedList
      })
      console.log('allOrderIemDetails', this.data.allOrderIemDetails);
    }, (err) => {
      console.error('加载订单详情失败:', err);
    });
  },

  // 返回上一页
  navigateBack() {
    wx.navigateBack();
  },

  // 评价内容输入
  onReviewInput(e) {
    this.setData({
      reviewContent: e.detail.value
    });
    console.log('评价内容输入reviewContent', this.data.reviewContent);
  },
  // 监听输入事件
  onReviewInput(e) {
    const value = e.detail.value;
    const length = value.length;

    // 即使设置了maxlength，也建议做双重校验
    if (length <= 100) {
      this.setData({
        reviewContent: value,
        currentLength: length
      });
    } else {
      // 超过100字时截断并提示
      this.setData({
        reviewContent: value.substring(0, 100), // 截断到50字
        currentLength: 100
      });

      // 可添加提示（可选）
      wx.showToast({
        title: '最多输入100字',
        icon: 'none',
        duration: 1000
      });
    }
  },
  // 商品质量评分变化
  onProductRatingChange(e) {
    this.setData({
      productRating: e.detail
    });
    console.log('商品质量评分变化productRating', this.data.productRating);
  },

  // 上传房屋照片
  uploadHousePhoto() {
    const remainingCount = this.data.maxImageCount - this.data.imagePaths.length;
    if (remainingCount <= 0) {
      wx.showToast({
        title: '最多上传5张图片',
        icon: 'none'
      });
      return;
    }
    
    wx.chooseImage({
      count: remainingCount,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        console.log("resp：",res);
        // 保存临时图片路径
        const newImagePaths = this.data.imagePaths.concat(res.tempFilePaths);    
        this.setData({
          imagePaths:newImagePaths
        })
        // 上传图片到服务器
        this.uploadImages(res.tempFilePaths);
      }
    });
  },
  
  // 上传图片到服务器
  uploadImages(tempFilePaths) {
    if (!tempFilePaths || tempFilePaths.length === 0) return;
    console.log("图片",this.data.imagePaths);
    
    wx.showLoading({
      title: '上传中...',
      mask: true
    });
    
    const that = this; // 保存this引用
    let uploadedCount = 0;
    const totalFiles = tempFilePaths.length;
    
    for (let index = 0; index < tempFilePaths.length; index++) {
      wx.uploadFile({
        filePath: tempFilePaths[index],
        name: 'file',
        url: 'http://localhost:8080/common/upload',
        header:{
          'Authorization':wx.getStorageSync('token')
        },
        success(uploadRes) {
          console.log('上传成功', uploadRes.data);
          // 解析返回的JSON字符串
          const result = JSON.parse(uploadRes.data);
          if(result.code==200){
            // 使用保存的that引用而不是this
            that.setData({
              image: that.data.image.concat(result.url)
            });
          }
          
          // 计数上传完成的文件
          uploadedCount++;
          
          // 当所有文件都上传完成时，更新imageUrl并隐藏加载提示
          if(uploadedCount === totalFiles) {
            that.setData({
              imageUrl: that.data.image.join()
            });
            wx.hideLoading();
          }
        },
        fail(err) {
          console.error('上传失败', err);
          uploadedCount++;
          
          if(uploadedCount === totalFiles) {
            that.setData({
              imageUrl: that.data.image.join()
            });
            wx.hideLoading();
          }
        }
      });
    }
  },
  
  // 预览房屋照片
  previewHousePhoto(e) {
    const index = e.currentTarget.dataset.index;
    const urls = this.data.imagePaths.length > 0 ? this.data.imagePaths : this.data.imageUrls;
    
    wx.previewImage({
      current: urls[index], // 当前显示图片的链接
      urls: urls // 需要预览的图片链接列表
    });
  },
  
  // 删除房屋照片
  deleteHousePhoto(e) {
    const index = e.currentTarget.dataset.index;
    const imagePaths = [...this.data.imagePaths];
    const imageUrls = [...this.data.imageUrls];
    
    // 删除对应索引的图片
    if (index < imagePaths.length) {
      imagePaths.splice(index, 1);
    }
    
    if (index < imageUrls.length) {
      imageUrls.splice(index, 1);
    }
    
    this.setData({
      imagePaths: imagePaths,
      imageUrls: imageUrls,
      'formData.housePhotos': imageUrls
    });
  },
  
  // 提交图片接口
  addCommentImages(fileList) {
    http.POST('/submit', {
      key: 'value'
    }, (res) => {
      console.log('提交图片成功:', res);
      if (res.code == 200) {

        wx.showToast({
          title: '所有评价内容提交成功',
          icon: 'success',
          duration: 2000,
          success: () => {
            // 延迟返回上一页
            setTimeout(() => {
              wx.navigateBack();
            }, 2000);
          }
        });
      }
    }, (err) => {
      console.error('提交图片失败:', err);
    });
  },

  // 上传完成后处理
  afterRead(event) {
    const {
      file
    } = event.detail;
    const that = this;

    // 显示加载中
    wx.showLoading({
      title: '上传中...',
      mask: true
    });

    // 调用若依的文件上传接口
    wx.uploadFile({
      url: http.BASE_URL + '/common/upload', // 若依上传接口地址
      filePath: file.path, // 临时文件路径
      name: 'file', // 与后端接口参数名一致（若依默认是file）
      header: {
        // 携带Token（若依需要登录认证）
        'Authorization': 'Bearer ' + wx.getStorageSync('token')
      },
      formData: {
        // 可选：添加额外参数（如文件类型）
        'fileType': 'image'
      },
      success: (res) => {
        // 解析接口返回结果（若依返回格式是JSON字符串）
        const result = JSON.parse(res.data);

        // 若依接口成功码是200
        if (result.code === 200) {
          // 上传成功，获取图片访问URL（若依返回的url字段）
          const imageUrl = result.url;

          // 更新fileList，添加上传成功的图片
          const {
            fileList
          } = that.data;
          fileList.push({
            url: imageUrl, // 服务器返回的图片地址
            // 保留原始文件信息（可选）
            originalFile: file
          });
          that.setData({
            fileList
          });

          wx.showToast({
            title: '上传成功',
            icon: 'success'
          });
        } else {
          // 上传失败（如权限不足、文件错误）
          wx.showToast({
            title: result.msg || '上传失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        // 网络错误
        console.error('上传失败：', err);
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      },
      complete: () => {
        // 隐藏加载
        wx.hideLoading();
      }
    });
  },
  // 提交评价内容接口
  addAllComment(fileList) {
    http.POST('/data', {
      key: 'value'
    }, (res) => {
      console.log('提交评价成功:', res);
      if (res.code == 200) {

      }
    }, (err) => {
      console.error('提交评价失败:', err);
    });
  },
  // 提交评价
  submitReview() {
    const {
      orderId,
      productRating,
      reviewContent,
      fileList
    } = this.data;

    if (!reviewContent.trim()) {
      wx.showToast({
        title: '请输入评价内容',
        icon: 'none'
      });
      return;
    }

    if (productRating === 0) {
      wx.showToast({
        title: '请给商品质量评分',
        icon: 'none'
      });
      return;
    }

    // 这里可以调用提交评价的接口
    console.log('提交评价:', {
      orderId,
      productRating,
      reviewContent,
      fileList
    });

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})